package com.csair.platform.cit.service.biz;

import com.alibaba.fastjson.JSONObject;
import com.csair.invoice.common.base.vo.JsonResult;
import com.csair.platform.cit.facade.model.CitQueryParam;
import com.csair.platform.cit.facade.model.InitDataVo;
import com.csair.platform.cit.facade.model.a200000.CitMssrSaveVo;
import com.csair.platform.cit.facade.model.a200000.CitNsrxxVo;
import com.csair.platform.cit.facade.model.a200000.CitQtxxVo;
import com.csair.platform.cit.facade.model.a200000.CitSbbxxVo;
import com.csair.platform.cit.facade.model.a200000.CitYhfbxxVo;
import com.csair.platform.cit.service.entity.*;
import com.csair.platform.usercenter.facade.model.user.UserVo;

import java.util.List;

/**
 * [主表数据]服务
 * @author ：caoyu
 * 
 */
public interface IA200000Service {

	/**
	 * 保存申报表的头部：纳税人信息、预缴方式、企业类型等
	 * @param nsrxxVo 纳税人信息
	 */
	void saveNsrxx(CitNsrxxVo nsrxxVo);

	/**
	 * 保存优惠附表数据
	 * @param yhfbxxVo 优惠附表信息
	 */
	void saveYhfbxx(CitYhfbxxVo yhfbxxVo);

	/**
	 * 保存申报表数据
	 * @param sbbxxVo 申报表信息
	 */
	void saveSbbxx(CitSbbxxVo sbbxxVo);

	/**
	 * 保存优惠减免数据
	 * @param mssrxxVo 优惠减免信息
	 * @param hc 行次
	 */
	void saveMssrxx(CitMssrSaveVo mssrxxVo, String hc);

	/**
	 * 保存申报表的脚部：经办人、受理人信息
	 * @param qtxxVo 其他信息
	 */
	void saveQtxx(CitQtxxVo qtxxVo);
	
	/**
	 * 获取主表数据
	 * @param param 查询参数
	 * @param user 当前用户
	 * @param isJson 是否按Json字符串返回
	 * @return 主表数据 
	 */
	JsonResult<JSONObject> query(CitQueryParam param, UserVo user, boolean isJson);
	
	/**
	 * 获取主表优惠编码数据
	 * @param hc 主表行次，如7、8、13
	 * @return 主表优惠编码数据 
	 */
	JsonResult<JSONObject> queryYhbm(String hc);

	/**
	 * 获取[主表数据-纳税人信息]
	 * @return
	 */
	List<CitNsrxx> queryNsrxx(String taxNo, String skssqq, String skssqz);

	/**
	 * 《A200000中华人民共和国企业所得税月（季）度预缴纳税申报表（A类，2021年版）》 1-24 行
	 */
	public List<CitSbbxx> querySbbxx(String taxNo, String skssqq, String skssqz);

	/**
	 * 获取期初数据
	 */
	public InitDataVo getInitData(CitQueryParam param, UserVo user);

	/**
	 * 获取[分配表的分支机构信息]-南航股份
	 * @param taxNo 税号
	 * @param skssqq 税款所属期起
	 * @param skssqz 税款所属期止
	 * @return [分配表的分支机构信息]-南航股份
	 */
	public CitFzjgForm queryNhFzjgData(String taxNo, String skssqq, String skssqz);

	/**
	 * 获取[主表数据-优惠附表信息]
	 * @param taxNo 税号
	 * @param skssqq 税款所属期起
	 * @param skssqz 税款所属期止
	 * @return [主表数据-优惠附表信息]
	 */
	public List<CitYhfbxx> queryYhfbxx(String taxNo, String skssqq, String skssqz);

	/**
	 * 获取[主表数据-其他信息]
	 * @param taxNo 税号
	 * @param skssqq 税款所属期起
	 * @param skssqz 税款所属期止
	 * @return [主表数据-其他信息]
	 */
	public List<CitQtxx> queryQtxx(String taxNo, String skssqq, String skssqz);
}
